"""
1. Python的模块导入
    模块Module 就是一个 py 文件，里面有类、函数、变量等，我们可以拿过来使用
"""


# 使用import导入time模块使用sleep功能（函数）
import time     # 导入Python内置的time模块（time.py这个代码文件）
print("你好")
time.sleep(5)   # 通过. 就可以使用模块内部的全部功能（类、函数、变量）
print("我好")

# 使用from导入time的sleep功能（函数）
from time import sleep
print("你好")
sleep(5)
print("我好")

# 使用 * 导入time模块的全部功能
from time import *      # *表示全部的意思
print("你好")
sleep(5)
print("我好")

# 使用as给特定功能加上别名
import time as t
print("你好")
t.sleep(5)
print("我好")

from time import sleep as sl
print("你好")
sl(5)
print("我好")


"""
2. 自定义模块
    每个Python文件都可以作为一个模块，模块的名字就是文件的名字. 也就是说自定义模块名必须要符合标识符命名规则
    当导入多个模块的时候，且模块内有同名功能. 当调用这个同名功能的时候，调用到的是后面导入的模块的功能
    如果一个模块文件中有`__all__`变量，当使用`from xxx import *`导入时，只能导入这个列表中的元素


"""

# 导入自定义模块使用
import MyModule as mm
result = mm.add(1, 2)

# 导入不同模块的同名功能
# from my_module1 import test
# from my_module2 import test
# test(1, 2)
# __main__变量
# from my_module1 import test

# __all__变量
# from my_module1 import *
# test_a(1, 2)

"""
3. 包管理
    包就是文件夹，但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。
"""


import MyPackage.MyModule1 as pm1
pm1.add1(2,3)